sqlite3: fix line editing in sqlite3-cli
authorMaxim Storchak <[email protected]>
Tue, 23 Sep 2025 15:00:00 +0000 (18:00 +0300)
committerGeorge Sapkin <[email protected]>
Tue, 7 Oct 2025 11:22:02 +0000 (14:22 +0300)
- fix building sqlite3-cli with readline and libedit
- add linenoise line editing option. This adds 12k to the size of the
  bare sqlite3-cli, but doesn't add any extra dependencies
- make linenoise the default choice as the most space conserving but
  still convenient variant
- bump PKG_RELEASE

Signed-off-by: Maxim Storchak <[email protected]>
libs/sqlite3/Config-cli.in
libs/sqlite3/Makefile

index 752db6e817cc233aa8b4e6328429631dbf984575..4a5e7a4aaf6c376019da11b4b912e91e2c12c16a 100644 (file)
@@ -3,17 +3,22 @@ menu "Configuration"
 
 choice
        prompt "Select command-line editing support"
-       default SQLITE3_LIBEDIT
+       default SQLITE3_LINENOISE
+
+       config SQLITE3_LINENOISE
+       bool "linenoise"
+       help
+         Build with linenoise. This is the default. Adds ~12k compared to the "none" variant
 
        config SQLITE3_LIBEDIT
        bool "libedit"
        help
-         Link against libedit. This is the default.
+         Link against libedit. Adds 4k + ~192k for libedit + ~341k for ncurses
 
        config SQLITE3_READLINE
        bool "readline"
        help
-         Link against GNU readline.
+         Link against GNU readline. Adds 4k + ~333k for readline + ~341k for ncurses
 
        config SQLITE3_READLINE_NONE
        bool "none"
index 1019877d54598b3edc52e3bc6a1ca9dc63cc80ce..60e4edcb870c5933d7a5c8c0f013fd99eb614796 100644 (file)
@@ -10,7 +10,7 @@ include $(TOPDIR)/rules.mk
 PKG_NAME:=sqlite
 PKG_VERSION:=3.50.4
 PKG_SRC_VERSION:=3500400
-PKG_RELEASE:=1
+PKG_RELEASE:=2
 
 PKG_SOURCE:=$(PKG_NAME)-autoconf-$(PKG_SRC_VERSION).tar.gz
 PKG_SOURCE_URL:=https://www.sqlite.org/2025/
@@ -34,10 +34,13 @@ PKG_CONFIG_DEPENDS := \
        CONFIG_SQLITE3_FTS4 \
        CONFIG_SQLITE3_FTS5 \
        CONFIG_SQLITE3_LIBEDIT \
+       CONFIG_SQLITE3_LINENOISE \
        CONFIG_SQLITE3_READLINE \
        CONFIG_SQLITE3_RTREE \
        CONFIG_SQLITE3_SESSION
 
+PKG_BUILD_DEPENDS += SQLITE3_LINENOISE:linenoise
+
 include $(INCLUDE_DIR)/package.mk
 
 define Package/sqlite3/Default
@@ -77,8 +80,7 @@ define Package/sqlite3-cli
   DEPENDS := \
     +libsqlite3 \
     +SQLITE3_LIBEDIT:libedit \
-    +SQLITE3_READLINE:libreadline \
-    +SQLITE3_READLINE:libncursesw
+    +SQLITE3_READLINE:libreadline
   EXTRA_DEPENDS:=libsqlite3 (=$(PKG_VERSION)-r$(PKG_RELEASE))
   TITLE+= (cli)
 endef
@@ -99,7 +101,9 @@ TARGET_CFLAGS += \
        -DHAVE_MALLOC_USABLE_SIZE \
        -DSQLITE_ENABLE_UNLOCK_NOTIFY \
        $(if $(CONFIG_SQLITE3_BATCH_ATOMIC_WRITE),-DSQLITE_ENABLE_BATCH_ATOMIC_WRITE) \
-       $(if $(CONFIG_SQLITE3_COLUMN_METADATA),-DSQLITE_ENABLE_COLUMN_METADATA)
+       $(if $(CONFIG_SQLITE3_COLUMN_METADATA),-DSQLITE_ENABLE_COLUMN_METADATA) \
+       -DHAVE_EDITLINE=$(if $(CONFIG_SQLITE3_LIBEDIT),1,0) \
+       -DHAVE_READLINE=$(if $(CONFIG_SQLITE3_READLINE),1,0)
 
 CONFIGURE_ARGS := \
        $(filter-out --target=% $(DISABLE_IPV6) $(DISABLE_NLS),$(CONFIGURE_ARGS)) \
@@ -117,9 +121,11 @@ CONFIGURE_ARGS := \
        $(if $(CONFIG_SQLITE3_SESSION),--enable-session,--disable-session)
 
 ifeq ($(CONFIG_SQLITE3_LIBEDIT),y)
-CONFIGURE_ARGS+=--disable-readline
+CONFIGURE_ARGS+=--editline --with-readline-header=$(STAGING_DIR)/usr/include/editline/readline.h
 else ifeq ($(CONFIG_SQLITE3_READLINE),y)
-CONFIGURE_ARGS+=--disable-editline
+CONFIGURE_ARGS+=--readline --with-readline-header=$(STAGING_DIR)/usr/include/readline/readline.h
+else ifeq ($(CONFIG_SQLITE3_LINENOISE),y)
+CONFIGURE_ARGS+=--with-linenoise=$(STAGING_DIR)/usr/include/linenoise
 else
 CONFIGURE_ARGS+=--disable-editline --disable-readline
 endif